/*
 * poligono_regular.h
 *
 *  Created on: Nov 2, 2012
 *      Author: Carlos Alegría Galicia
 */

#ifndef POLIGONO_REGULAR_H_
#define POLIGONO_REGULAR_H_

#include "punto.h"

/**
 * Un polígono regular en el plano.
 *
 * Para obtener más detalles sobre el modelado de un polígono regular, leer la
 * solución escrita de este ejercicio en el sitio del curso.
 */
typedef struct
{
  punto *posicion;      /**< El centro del circuncírculo del polígono */
  int lados;            /**< El número de lados del polígono */
  float radio;          /**< El radio del circuncírculo del polígono */
  float perimetro;      /**< El valor del perímetro del polígono */
  float area;           /**< El valor del área del polígono */

} poligono_regular;

/**
 * Crea un polígono regular con los parámetros especificados
 *
 * @param [in] posicion La posición del polígono
 * @param [in] lados    El número de lados del polígono
 * @param [in] radio    El radio del polígono
 * @returns             Un apuntador al poligono_regular recién creado
 */
poligono_regular *
pr_crear_poligono(punto *posicion, int lados, float radio);

/**
 * Obtiene la posición del poligono_regular especificado.
 *
 * Por convención, la posición de un poligono_regular es el centro de su
 * circuncírculo
 *
 * @param [in] poligono El poligono_regular del que se quiere obtener la
 *                      posición
 * @returns             La posición del poligono_regular especificado
 */
punto *
pr_obtener_posicion(poligono_regular *poligono);

/**
 * Establece una nueva posición para el poligono_regular especificado
 *
 * @param [in] poligono El poligono_regular al que se le establecerá la nueva
 *                      posición
 * @param [in] posicion La nueva posición del polígono especificado
 */
void
pr_cambiar_posicion(poligono_regular *poligono, punto *posicion);

#endif /* POLIGONO_REGULAR_H_ */
